// pages/login/login.js
/*{
单元名称：登录页
单元功能：
所属模块功能：
创建人：liang
创建时间：
修改人：yan
修改时间：230906
}*/
Page({

  /**
   * 页面的初始数据
   */
  data: {
    avatar: wx.getStorageSync('avatar'),             // 头像

    foldHeight: 0,          // 展开高度
    tabActive: 0,           // 当前激活的tab

    account: '',            // 账号
    password: '',           // 密码
    pwdChecked: true,       // 是否记住密码

    isWechatLogin: false,   // 是否微信用户一键登录
    account_w: '',          // 账号
    password_w: '',         // 密码

    sysList: [],  //系统列表
    showSys: true,  //显示系统列表选择弹窗
    active: 0,    //选中系统行
  },

  // 设置 展开 高度
  setFoldHeight() {
    let query = wx.createSelectorQuery()
    query.select('.ipts_wrap').boundingClientRect(rect => {
      this.setData({
        foldHeight: rect.height * 2,
      })
    }).exec()
  },
  // 设置 记住密码 默认值 及 填充记住的账号密码
  setRememberInfo() {
    let checked = wx.getStorageSync('checkedLoginInfo'),
        data = {
          pwdChecked: checked,
        }
    if(checked) {
      data.account = wx.getStorageSync('loginAcct')
      data.password = wx.getStorageSync('loginPwd')
    }
    this.setData(data)
  },

  // 更换 tab active
  changeTab(e) {
    this.setData({
      tabActive: e.currentTarget.dataset.i,
      isWechatLogin: false,
    })
  },

  // 双向绑定 报警告处理
  inputIpt(e) {},

  // 记住密码 onchange
  rememberPwdChange(e) {
    let checked = e.detail
    this.setData({
      pwdChecked: checked,
    })
    wx.setStorageSync('checkedLoginInfo', checked)
  },
  // 小程序用户头像昵称获取规则调整公告：https://developers.weixin.qq.com/community/develop/doc/00022c683e8a80b29bed2142b56c01
  onChooseAvatar(e) {
    let { avatarUrl } = e.detail
    console.log(avatarUrl);
    this.setData({
      avatar: avatarUrl,
    })
    this.login()
  },
  // 登录/微信用户一键登录/确认绑定
  login(e) {
    let { tabActive, isWechatLogin, account, password, } = this.data
    if(tabActive) {
      if(isWechatLogin) { // 确认绑定
        console.log('确认绑定')
        this.updateWxBind()
      } else {  // 微信用户一键登录
        // this.setData({
        //   isWechatLogin: true,
        // })
        console.log('微信用户一键登录')
        // 授权用户
        this.getWxLogin()
      }
    } else {  // 登录
      this.postLogin(account, password)
    }
  },

  // 找回密码 跳转到 找回密码 页面
  forgetPwd(e) {
    this.navTo('../forget_pwd/forget_pwd')
  },
  navTo(url) {
    wx.navigateTo({
      url,
    })
  },

  // 接口
  // 登录接口
  postLogin(account, password) {
    let { avatar, } = this.data
    if(!account || !password) {
      wx.$toast('请输入账号和密码！')
      return
    }
    let post = {
      User: account,
      Password: password,
    }
    wx.showLoading({ mask: true, })
    wx.$post(1, 'Authorize/Token', post).then(res => {
      if(res.errcode !== 0) return
      wx.$toast('登录成功！')

      // 存储登录信息
      wx.$util.setLoginStorage(res.data.row[0])
      let {system_id} = res.data.row[0] || {};
      let storageObj = {
        loginAcct: account,
        loginPwd: password,
        avatar,
      }

      Object.entries(storageObj).forEach(([key, val]) => wx.setStorageSync(key, val))
      wx.$getBarTitle(system_id);

      // 跳转到首页
      // this.navTo('../index/index')
      wx.switchTab({
        url: '/pages/index/index',
      })
    })
  },
  // 微信用户一键登录
  getWxLogin() {
    wx.login({
      success: (res) => {
        if(res.code) {
          wx.showLoading({ mask: true, })
          wx.$get(1, 'Authorize/get_miniprogram_code2login', { code: res.code, }).then(res => {
            wx.hideLoading()
            if(res.errcode !== 0) return
            let data = res.data.row[0] || {}
            if(data.token) {  // 已绑定账号，返回登录信息返回字段内容，与/api/v1/Authorize/Token接口返回的字段内容一致，这个接口如有返回Token信息就已登录系统进入首页，否则就进入绑定账号界面。
              wx.$toast('登录成功！')
              // 存储登录信息
              wx.$util.setLoginStorage(data)
              wx.$getBarTitle(data.system_id);
              // 跳转到首页
              wx.switchTab({
                url: '../index/index',
              })
            } else {  // 未绑定，显示账户密码，用户输入后再绑定
              this.data.Transaction_No = data.Transaction_No
              this.setData({
                isWechatLogin: true,
              })
            }
          })
        } else {
          console.log('登录失败！' + res.errMsg)
          wx.$toast('授权失败！')
        }
      }
    })
  },
  // 微信登录绑定接口
  updateWxBind() {
    let { account_w, password_w, Transaction_No, } = this.data
    if(!account_w || !password_w) {
      wx.$toast('请输入账号和密码！')
      return
    }
    let post = {
      User: account_w,
      Password: password_w,
      Transaction_No: Transaction_No,
    }
    wx.showLoading({ mask: true, })
    wx.$post(1, 'Authorize/update_miniprogram_bind', post).then(res => {
      console.log(res, '小程序绑定接口')
      if(res.errcode !== 0) return
      wx.$toast('绑定成功！')
      this.postLogin(account_w, password_w)
    })
  },

  //230906 yan 增加获取平台数据库连接参数
  getPTConnection(){
    let url = 'WL/PTConnectionString';
    wx.$get(5,url).then(res => {
      if (res.errcode !== 0) return;
      console.log(res);
      let sysList = res.data.row;

      this.setData({sysList,active: 0,showSys: true})
    })
  },
  //确定选择系统
  selectSys(e){
    let {type} = e.currentTarget.dataset;
    this.setData({
      showSys: false
    });
    if (type === 'WL'){
      wx.navigateTo({
        url: '/Logistics/Navigator/Navigator'
      })
    }
    if (type === 'ZT'){
      wx.navigateTo({
        url: '/SlagCar/Login/Login'
      })
    }

  },
  //点击切换
  toggleSys(){
    this.setData({showSys: true})
  },

  //230906 end


  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    wx.$setBarTitle();
    this.setFoldHeight();

    this.setRememberInfo()
    this.setData({
      title: wx.getStorageSync('bar_title') || ''
    })
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

    // wx.login({
    //   success (res) {
    //     console.log(res);
    //     if (res.code) {

    //     //   //发起网络请求
    //     //   wx.request({
    //     //     url: 'https://example.com/onLogin',
    //     //     data: {
    //     //       code: res.code
    //     //     }
    //     //   })
    //     } else {
    //       console.log('登录失败！' + res.errMsg)
    //     }
    //   }
    // })
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  },
})
